<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>变量作用域</title>
</head>
<body>
    <script>
        //变量作用域
        // a这个变量的作用于是全局的，
        // 所以a我们称之为“全局变量”
        var a = 10;

        function myFunc(){
            // c这个变量的作用域是整个函数体，
            // 它的作用域是局部的，所以c我们称之为“局部变量”。
            // c作为函数体内部的局部变量，不能在函数体之外使用。

            // var a = 40;
            // 使用变量时，会先在自己的作用域中查找是否有该变量；
            // 如果有，就直接使用；如果没有，就到上一级作用域中查找；
            // 以此类推，如果最终在全局作用域中都没有，那么回报错误信息。
            // ReferenceError: xxx is not defined。

            var c = a + 20;
            console.log(c);
        }

        myFunc();
        // console.log(c); //c is not defined。

        //js中的函数体内部可以嵌套函数，那么内部函数可以访问外部函数
        //中定义的变量，反之就不行。
        function myFunc2(){
            var x = 1;
            function myFunc3(){
                var y = 3;
            }
            // console.log(y);  y is not defined。
        }

        //if/for 语句中的{}不能形成作用域。
        if(a > 5){
            var b = 100;
            var c = a + b;
        }
        console.log(c);
        

    </script>
</body>
</html>